<?php
/**
 * Headers
 */
header("Cache-Control: no-cache, must-revalidate");
header("Content-Type: text/html; charset=utf-8");

/**
 * Config file
 */
include 'config.php';

/**
 * Eviter les magic quotes
 */
if(get_magic_quotes_gpc()) {
	$_GET = array_map('stripslashes', $_GET);
	$_POST = array_map('stripslashes', $_POST);
	$_COOKIE = array_map('stripslashes', $_COOKIE);
}

/**
 * Session (pour sécuriser l'acces)
 */
session_start();
if(!isset($_SESSION['GGTRSL_LOGIN'])) $_SESSION['GGTRSL_LOGIN'] = false;

/**
 * Gagatranslate + reprise des constantes
 */
include '../../libs/GagaTranslate.class.php';
$tpl = new Gagatemplate('../../');
$tpl->tplDir = $ggTrsl_tplDir.'/';
$nb=0;

/**
 * Listes des pages
 */
switch(@$_GET['page']){
	/**
	 * Cette page liste tous les fichiers de langue avec les différents langages
	 */
	case 'liste':
		isLogin();
		$tpl->assign('files', getListXml('fr'));
		$tpl->assign('langs', $ggTrsl_listLang);
		$tpl->parse('translate/liste.html');
	break;

	/**
	 * Cette page n'affiche rien, elle se contente de générer tous les fichiers XML et de faire une redirection vers la page liste
	 */
	case 'generateXML':
		isLogin();
		array_map(array($tpl, 'generateXML'), getListTpl());
		header('location: index.php?page=liste');
	break;

	/**
	 * Cette page permet d'éditer les traductions d'une page
	 */
	case 'edit':
		isLogin();
		$f = '../../'.$ggTrsl_langDir.'/'.$_GET['fileLang'].'/'.$_GET['XMLFile'];
		$xml = simplexml_load_file($f);
		foreach($xml->attributes() as $k=>$v) $$k = (string)$v;
		if(isset($_POST['GGRec'])){
			$newXml = Gagatranslate::createNewXMLInstance($value, $comment);
			unset($_POST['GGRec']);
			foreach($_POST as $k=>$v)
			$newXml->addChild('translation', Gagatranslate::entity($v))->addAttribute('key', $k);
			@unlink($f);
			$c = $newXml->asXML($f);
		}
		if(!is_file($f)) header('location:index.php');
		$xml = simplexml_load_file($f);
		$arr = array();
		$tpl->assign(array(
			'XMLFile'	=> $_GET['XMLFile'],
			'lang'	=> $value,
			'comment'	=> $comment));
		foreach($xml->children() as $v)
			$arr[] = array(
				'key'	=>(string)$v['key'],
				'value'	=> (string)$v,
				'row'	=> ceil(strlen((string)$v)/40));
		if(!empty($arr)) $tpl->assign('fields', $arr);
		$tpl->parse('translate/edit.html');
	break;

	/**
	 * Page par défaut, page de connexion
	 */
	default:
		if(!$ggTrsl_needPass){
			header('location: index.php?page=liste');
			$_SESSION['GGTRSL_LOGIN'] = true;
			exit;
		}
		$err = false;
		if(isset($_POST['login'])){
			if($_POST['pass'] == $ggTrsl_pass){
				header('location: index.php?page=liste');
				$_SESSION['GGTRSL_LOGIN'] = true;
			}else $err = true;
		}
		$tpl->assign('erreur', $err);
		$tpl->parse('translate/login.html');
}

/**
 * Fonction de vérification du droit d'acces. Redirige vers la page de connexion si non connecté.
 */
function isLogin(){
	if(isset($_SESSION['GGTRSL_LOGIN'])){
		if(!$_SESSION['GGTRSL_LOGIN']) header('location:index.php');
	}else header('location:index.php');
}

/**
 * Liste tous les fichiers template
 * @global Array $gLTPL liste des fichiers templates
 * @return String la liste des fichiers templates
 */
function getListTpl(){
	global $gLTPL,$ggTrsl_tplDir;
	$gLTPL = array();
	getListTplCallback('../../'.$ggTrsl_tplDir);
	return $gLTPL;
}

/**
 * Fonction callback de getListTpl
 * @global Array $gLTPL liste des fichiers templates
 * @param String $d le dossier à explorer
 */
function getListTplCallback($d){
	global $gLTPL,$ggTrsl_TplExt,$ggTrsl_tplDir;
	$dir = opendir($d);
	while($f = readdir($dir)){
		if($f!='.' && $f!='..'){
			$l = $d.'/'.$f;
			if(is_dir($l))
				$arr = getListTplCallback($l);
			elseif(in_array(substr($f, strrpos($f, '.')+1), $ggTrsl_TplExt))
				$gLTPL[] = str_replace('../../'.$ggTrsl_tplDir.'/', '', $l);
		}
	}
	closedir($dir);
}

/**
 * Liste tous les fichiers de langue (fichier XML)
 * @param String $d la langue (en principe n'importe laquelle vu que les fichiers sont les mêmes pour chaque langue).
 * @return Array la liste des fichiers XML
 */
function getListXml($d){
	global $ggTrsl_langDir;
	$r = array();
	$dir = opendir('../../'.$ggTrsl_langDir.'/'.$d);
	while($f = readdir($dir)){
		if($f!='.' && $f!='..' && substr($f, strrpos($f, '.'))=='.xml') $r[] = $f;
	}
	closedir($dir);
	sort($r);
	return $r;
}
?>
